package com.hello.system.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 鱼类检测模型管理对象 fish_detection_model
 * 
 * @author hello
 * @date 2025-08-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class FishDetectionModel extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 模型ID */
    private Long modelId;

    /** 模型名称 */
    @Excel(name = "模型名称")
    private String modelName;

    /** 模型类型(yolo=YOLO系列目标检测/rcnn=R-CNN系列精确检测/mobile=移动端轻量模型/custom=自定义模型) */
    @Excel(name = "模型类型(yolo=YOLO系列目标检测/rcnn=R-CNN系列精确检测/mobile=移动端轻量模型/custom=自定义模型)")
    private String modelType;

    /** 模型版本 */
    @Excel(name = "模型版本")
    private String modelVersion;

    /** 模型文件路径 */
    @Excel(name = "模型文件路径")
    private String modelPath;

    /** 模型文件大小(字节) */
    @Excel(name = "模型文件大小(字节)")
    private Long modelSize;

    /** 默认置信度阈值 */
    @Excel(name = "默认置信度阈值")
    private BigDecimal confidenceThreshold;

    /** 支持检测的鱼类种类(JSON格式) */
    @Excel(name = "支持检测的鱼类种类(JSON格式)")
    private String supportSpecies;

    /** 模型描述 */
    @Excel(name = "模型描述")
    private String modelDescription;

    /** 是否启用(0=否,1=是) */
    @Excel(name = "是否启用(0=否,1=是)")
    private String isActive;

    /** 是否免费(0=否,1=是) */
    @Excel(name = "是否免费(0=否,1=是)")
    private String isFree;

    /** 模型下载地址 */
    @Excel(name = "模型下载地址")
    private String downloadUrl;

    /** 模型准确率(%) */
    @Excel(name = "模型准确率(%)")
    private BigDecimal accuracyRate;

    /** 平均处理时间(毫秒) */
    @Excel(name = "平均处理时间(毫秒)")
    private Long avgProcessingTime;

    public void setModelId(Long modelId) 
    {
        this.modelId = modelId;
    }

    public Long getModelId() 
    {
        return modelId;
    }
    public void setModelName(String modelName) 
    {
        this.modelName = modelName;
    }

    public String getModelName() 
    {
        return modelName;
    }
    public void setModelType(String modelType) 
    {
        this.modelType = modelType;
    }

    public String getModelType() 
    {
        return modelType;
    }
    public void setModelVersion(String modelVersion) 
    {
        this.modelVersion = modelVersion;
    }

    public String getModelVersion() 
    {
        return modelVersion;
    }
    public void setModelPath(String modelPath) 
    {
        this.modelPath = modelPath;
    }

    public String getModelPath() 
    {
        return modelPath;
    }
    public void setModelSize(Long modelSize) 
    {
        this.modelSize = modelSize;
    }

    public Long getModelSize() 
    {
        return modelSize;
    }
    public void setConfidenceThreshold(BigDecimal confidenceThreshold) 
    {
        this.confidenceThreshold = confidenceThreshold;
    }

    public BigDecimal getConfidenceThreshold() 
    {
        return confidenceThreshold;
    }
    public void setSupportSpecies(String supportSpecies) 
    {
        this.supportSpecies = supportSpecies;
    }

    public String getSupportSpecies() 
    {
        return supportSpecies;
    }
    public void setModelDescription(String modelDescription) 
    {
        this.modelDescription = modelDescription;
    }

    public String getModelDescription() 
    {
        return modelDescription;
    }
    public void setIsActive(String isActive) 
    {
        this.isActive = isActive;
    }

    public String getIsActive() 
    {
        return isActive;
    }
    public void setIsFree(String isFree) 
    {
        this.isFree = isFree;
    }

    public String getIsFree() 
    {
        return isFree;
    }
    public void setDownloadUrl(String downloadUrl) 
    {
        this.downloadUrl = downloadUrl;
    }

    public String getDownloadUrl() 
    {
        return downloadUrl;
    }
    public void setAccuracyRate(BigDecimal accuracyRate) 
    {
        this.accuracyRate = accuracyRate;
    }

    public BigDecimal getAccuracyRate() 
    {
        return accuracyRate;
    }
    public void setAvgProcessingTime(Long avgProcessingTime) 
    {
        this.avgProcessingTime = avgProcessingTime;
    }

    public Long getAvgProcessingTime() 
    {
        return avgProcessingTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("modelId", getModelId())
            .append("modelName", getModelName())
            .append("modelType", getModelType())
            .append("modelVersion", getModelVersion())
            .append("modelPath", getModelPath())
            .append("modelSize", getModelSize())
            .append("confidenceThreshold", getConfidenceThreshold())
            .append("supportSpecies", getSupportSpecies())
            .append("modelDescription", getModelDescription())
            .append("isActive", getIsActive())
            .append("isFree", getIsFree())
            .append("downloadUrl", getDownloadUrl())
            .append("accuracyRate", getAccuracyRate())
            .append("avgProcessingTime", getAvgProcessingTime())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
